package org.example.controller;

import org.example.service.CustomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;


@Controller
public class UserController {
    /**
     * DI 方式一： 成员变量（字段注入） 最简单,最常见，推荐
     *  @Autowired Spring字节设计注解
     */

//    @Qualifier("customServiceImplB")
//    @Autowired

    /**
     *  @Resource java官方注解，Spring实现
      */
    @Resource(name = "customServiceImplB")
    private CustomService customService;

    /**
     * DI  方式二 ：方法注入，方法的参数一定要是被注入的类型
     */
//    @Autowired
    private void setCustomService(@Qualifier("customServiceImplA") CustomService customService){
        this.customService = customService;
    }

//    public UserController(){
//        System.out.println("UserController.UserController");
//    }
    /**
     * DI 方式三：构造器注入，构造器一定要有被注入类型的参数,不要有五参数构造函数
     *   不需要贴任何注解
     * @param customService
     */


//    private UserController(@Qualifier("customServiceImplA") CustomService customService){
//        this.customService = customService;
//    }

    public void saveUser(){
        customService.saveUser();
    }
}
